/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb.negocio;

import ejb.dao.*;
import entidades.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.faces.model.SelectItem;

/**
 *
 * @author Pablo
 */
@Stateless
public class PropuestaService implements PropuestaServiceLocal {
    

    @EJB
    PaisDAOLocal paisDAO;
    @EJB
    PlanEcoDAOLocal planEcoDAO;
    @EJB
    PropuestaDAOLocal propuestaDAO;
    @EJB
    SolicitudDAOLocal solicitudDAO;
    @EJB
    UsuarioDAOLocal usuarioDAO;
    @EJB
    PlanEcoTradDAOLocal planEcoTradDAO;
    @EJB
    PaisTradDAOLocal paisTradDAO;
    @EJB
    PropuestaDestinosDAOLocal propuestaDestinosDAO;
    
    @Override
    public ArrayList<Propuesta> buscaPropuesta(Integer paisDestino, Date fechaIni, 
            Date fechaFin, Integer nDiasMax, Integer nDiasMin, Integer planEco) {
        Paises entityPais = null;
        if (paisDestino != null){
            entityPais = paisDAO.getPais(paisDestino);
        }
        Planeseco entityPlanEco = null;
        if (planEco != null){
            entityPlanEco = planEcoDAO.getPlanEco(planEco);
        }
        ArrayList<Propuesta> propuestas = propuestaDAO.findPropuesta(entityPais, fechaIni, fechaFin, nDiasMax, 
                nDiasMin, entityPlanEco);
        return propuestas;
    }

    @Override
    public ArrayList<Paises> getListaPaises() {
        return paisDAO.getListaPaises();
    }

    @Override
    public ArrayList<Planeseco> getListaPlanesEco() {
        return planEcoDAO.getPlanesEco();
    }

    @Override
    public Propuesta getPropuesta(Integer idPropuesta) {
        return propuestaDAO.getPropuesta(idPropuesta);
        /*
        Propuesta propuesta = propuestaDAO.getPropuesta(idPropuesta);
        getSolicitudByNick("pablo", propuesta.getIdPropuesta());
        return propuesta;
        * 
        */
    }

    @Override
    public Solicitudes getSolicitudByNick(Usuario nick, Propuesta idPropuesta) {
        return solicitudDAO.getSolicitudByNickYIdProp(nick, idPropuesta);
    }

    @Override
    public void newSolicitud(Usuario nick, Propuesta idPropuesta, String mensaje) {
        Solicitudes solicitud = new Solicitudes();
        solicitud.setNick(nick);
        solicitud.setIdPropuesta(idPropuesta);
        solicitud.setMensajeSolicitud(mensaje);
        solicitud.setFechaSolicitud(Calendar.getInstance().getTime());
        solicitudDAO.newSolicitud(solicitud);
    }

    @Override
    public String getPlanEcoDescr(int planEco, String idioma) {
        return planEcoTradDAO.getDescrPlanEco(planEco,idioma);        
    }

    @Override
    public String getPlanEcoNombre(int planEco, String idioma) {
        return planEcoTradDAO.getNombrePlanEco(planEco,idioma);
    }

    @Override
    public Planesecotrad getPlanEcoTrad(Planeseco plan, String String) {
        return planEcoTradDAO.getPlanEcoTrad(plan, String);
    }

    @Override
    public Paisestrad getPaisTrad(Paises pais, String idioma) {
        return paisTradDAO.getPaisTrad(pais, idioma);
    }

    @Override
    public Paises getPais(Integer idPais) {
        return paisDAO.getPais(idPais);
    }    

    @Override
    //Insertar nueva propuesta en la base de datos
    public void insertProposal(Usuario nick, ArrayList<SelectItem> destinos, 
            ArrayList<ParDeFechas> fechas, Double coste_max, Double coste_min, 
            Integer n_dias_max, Integer n_dias_min, Integer plan_eco, 
            String comentario, Boolean publica) {
        Propuesta propuesta = new Propuesta();
        //Pendiente incorporar todo a propuesta
        
        
        for (int i = 0; i < destinos.size(); i++){
            Paises pais = paisDAO.getPais((Integer) destinos.get(i).getValue());
            propuestaDestinosDAO.newPropuestaDestino(propuesta, pais);
        }
    }
    
    
}
